﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FantastPlatform.Framework.IModel;
using FantastPlatform.Framework.Core;

namespace FantastPlatform.Framework.IService
{
    public interface IEmployeeService : IDataService<IEmployee>
    {
        /// <summary>
        /// 得到员工联系方式
        /// </summary>
        /// <param name="employeeId"></param>
        /// <returns></returns>
        IList<IEmployeeContact> GetContactsByEmployeeId(int employeeId, IList<Sort> sorts, int pageSize, int page, out int totalCount);
        /// <summary>
        /// 得到员工岗位
        /// </summary>
        /// <param name="employeeId"></param>
        /// <returns></returns>
        IList<IEmployeePost> GetEmployeePostByEmployeeId(int employeeId, IList<Sort> sorts, int pageSize, int page, out int totalCount);
        /// <summary>
        /// 得到绩效考核
        /// </summary>
        /// <param name="employeeId"></param>
        /// <param name="sorts"></param>
        /// <param name="pageSize"></param>
        /// <param name="page"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        IList<IEmployeeCheckPerformance> GetEmployeeCheckPerformancesByEmployeeId(int employeeId, IList<Sort> sorts, int pageSize, int page, out int totalCount);
        /// <summary>
        /// 得到季度考核
        /// </summary>
        /// <param name="employeeId"></param>
        /// <param name="sorts"></param>
        /// <param name="pageSize"></param>
        /// <param name="page"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        IList<IEmployeeCheckQuarter> GetEmployeeCheckQuartersByEmployeeId(int employeeId, IList<Sort> sorts, int pageSize, int page, out int totalCount);
        /// <summary>
        /// 得到考核结果运用
        /// </summary>
        /// <param name="employeeId"></param>
        /// <param name="sorts"></param>
        /// <param name="pageSize"></param>
        /// <param name="page"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        IList<IEmployeeCheckResult> GetEmployeeCheckResultsByEmployeeId(int employeeId, IList<Sort> sorts, int pageSize, int page, out int totalCount);
        /// <summary>
        /// 得到年度考核
        /// </summary>
        /// <param name="employeeId"></param>
        /// <param name="sorts"></param>
        /// <param name="pageSize"></param>
        /// <param name="page"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        IList<IEmployeeCheckYear> GetEmployeeCheckYearsByEmployeeId(int employeeId, IList<Sort> sorts, int pageSize, int page, out int totalCount);
        /// <summary>
        /// 得到教育经历
        /// </summary>
        /// <param name="employeeId"></param>
        /// <param name="sorts"></param>
        /// <param name="pageSize"></param>
        /// <param name="page"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        IList<IEmployeeEducation> GetEmployeeEducationsByEmployeeId(int employeeId, IList<Sort> sorts, int pageSize, int page, out int totalCount);
        /// <summary>
        /// 得到工作经历
        /// </summary>
        /// <param name="employeeId"></param>
        /// <param name="sorts"></param>
        /// <param name="pageSize"></param>
        /// <param name="page"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        IList<IEmployeeJobExperience> GetEmployeeJobExperiencesByEmployeeId(int employeeId, IList<Sort> sorts, int pageSize, int page, out int totalCount);
        /// <summary>
        /// 得到奖惩状况
        /// </summary>
        /// <param name="employeeId"></param>
        /// <param name="sorts"></param>
        /// <param name="pageSize"></param>
        /// <param name="page"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        IList<IEmployeePrizePunish> GetEmployeePrizePunishsByEmployeeId(int employeeId, IList<Sort> sorts, int pageSize, int page, out int totalCount);
        /// <summary>
        /// 员工离职
        /// </summary>
        /// <param name="ids"></param>
        void QuitEmployees(List<int> ids);

        /// <summary>
        /// 通过警号获得警员
        /// </summary>
        /// <param name="code">警号</param>
        IEmployee Get(string code);
        /// <summary>
        /// 得到员工的调动记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        IList<IEmployeePost> GetEmployeeRecords(int employeeId, IList<Sort> sorts, int pageSize, int page, out int totalCount);
       
    }
}
